Date            :       14 mars 1993
		Protection      :       MOT DE PASSE
		Programme       :       SNOOKER
		Outils          :       SOFT-ICE V2.50a 
		Fichier         :       Lan�eur.com
		Temps pass�     :       1 HEURE environ...
		Soci�t�         :       VIRGIN GAMES
		Divers          :       Compact� par RNC
		Origine		:	L.F.
		Num�ro		:	208

	Le CALL qui prend les caract�res se trouve en CS:07F9 et le CALL du
	test se trouve en CS:0801. Si � l'issu de ce test le flag Z est
	positionn� on passe la demande du code.
	
	CS=185C
	CS:07F9	E826FE		CALL	0622		; PREND LES CHAR.
	CS:07FC	832EFA9001	SUB	WORD PTR [90FA],+01
	CS:0801	E8B501		CALL	09B9		; TEST LA REPONSE...
	CS:0804	7459		JZ	085F		; SAUT SI OK.
	CS:0806 B80100		MOV	AX,0001

	Dans le CALL 09B9 on voit que les caract�res transitent par la
	position m�moire: DS:90B7.

	CS:09BE 800019		ADD	BYTE PTR [BX+SI],19    DS:90B7 = 41

	41 = 'A': J'avais tap� une suite de A.

	Apr�s moulte d�roulement de cette routine je m'aper�ois qu'en CS:09EC
	DX doit �tre �gal au contenu de SI+4A pour positionner le flag Z.

	CS:09E9	895442		MOV	[SI+42],DX	; ICI IL FAUT QUE
	CS:09EC	2B544A		SUB	DX,[SI+4A]	; DX = [SI+4A]....
	CS:09EF	7506		JNZ	09F7		; SI PAS 0, CODE NOK.
	CS:09F1	C706F8900000	MOV	WORD PTR [90F8],0000
	CS:09F7 89540A		MOV	[SI+0A],DX	

	La solution est de substituer au saut un XOR DX,DX pour mettre � la
	fois 0 dans DX et positionner du m�me coup le flag 0. Le saut est
	supprim� du m�me coup ! D'une pierre trois coups.

	Par contre c'est la croix et le drapeau pour trouver le bon segment.
	Je n'ai jamais autant gal�r�. En utilisant mon programme DEBUG qui me
	permet grace au port imprimante de surveiller n'importe quel byte
	situ� dans le mappage m�moire ou IO je vois que le 75 en CS:09EF est
	bien l� longtemps avant la demande du code. Alors quoi ! 
	Je n'arrive pas � y acc�der avec mes 30 d�pilages.
	En fait je m'aper�ois que le programme effectue des op�rations sur la
	pile dans ce coin l�.
	Je d�cide donc de fouiller plus bas: je place 255 dans la variable
	de d�pilage et cela fonctionne enfin !
	Je r�essaye deux trois coup pour "cibler" un peu mieux le nombre
	de d�pilage. Et finalement je trouve qu'il n'en faut pas moins de 128 !

;       PATCH POUR LE PROGRAMME SNOOKER
;       DETOURNEMENT DE L'INT 21 sf 35	; c'est elle qui �tait le plus pr�s !
;
;******************************************************************************
;                             ZONE A INITIALISER

adr_ip1         equ     09EFh   ; Adresse dont le contenu est � modifier.
				; Adresse directe.
anc_val         equ     675h    ; Valeur d'origine � rechercher, invers�e.
nouv_val        equ     0D233h  ; Nouvelle valeur invers�e: 33D2 --> XOR DX,DX 
INT_DET         equ     21h     ; Le num�ro de l'INT que l'on veut utiliser.
sous_fonc       equ     35h     ; La sous-fonction utilis�e.
nb              equ     080h    ; Nombre de d�pilage.
BEEP_TONE       equ     440     ; Fr�quence de la note.

;******************************************************************************
;	Le reste du lan�eur est identique � tous les autres.

	FREDDY